/*
 * ZTAutoCompleteWatcher.h
 * ZorgloThèque
 * 
 * Created by Benjamin Dehalu on 15/03/10.
 * 
 * Copyright (c) 2010 Zorglo Software
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * 
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * Neither the name of the project's author nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#import <Cocoa/Cocoa.h>

@class ZTNamedManagedObject;
@class ZTAutoCompleteTextField;

enum  {
	ZTAllowUndoOnDelete = 1,
	ZTAllowUndoOnRename = 2,
	ZTDisplayNotificationOnDelete = 4,
	ZTDisplayNotificationOnRename = 8,
	ZTAllowDelete = 16
};
typedef NSUInteger ZTAutoNotificationOptions;

@interface ZTAutoCompleteDelegate : NSObject<NSTextFieldDelegate> {
	NSString	*zEntityName;
	NSString	*zFormatStringForDelete;
	NSString	*zFormatStringForRename;
	ZTAutoCompleteTextField		*zTextField;
	ZTAutoNotificationOptions	zOptions;
}

@property (copy, getter=deleteFormat, setter=setDeleteFormat) NSString* zFormatStringForDelete;
@property (copy, getter=renameFormat, setter=setRenameFormat) NSString* zFormatStringForRename;
@property (getter=textField, setter=setTextField) ZTAutoCompleteTextField* zTextField;

- (id) initForEntityName: (NSString *) entityName options: (ZTAutoNotificationOptions)options;

- (ZTNamedManagedObject *) findInStore: (NSString *) aName;
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor;
- (void)controlTextDidChange:(NSNotification *)aNote;
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command;
- (void)controlTextDidEndEditing:(NSNotification *)aNote;


@end
